<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/1
 * Time: 20:21
 */

namespace app\admin\controller;
use think\Config;
use think\Controller;
use think\Db;
use think\Request;
use Common\Jpush;
class Push extends Common
{

    public function pushAll()
    {
        $data = Request::instance()->post();
        if(array_key_exists('type' , $data) && array_key_exists('title' , $data) && array_key_exists('content' , $data))
        {
            $result = [];
            if($data['type'] == 'all')//给所有人推送
            {
                $user_push = new Jpush();
                $shop_push = new Jpush('shop');
                $info = $user_push->pushAll($data['content']);
                $info1 = $shop_push->pushAll($data['content']);
                if($info && $info1){
                    $ins_data['status'] = 1;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 3;
                    $no_id = Db::name('notice')->insertGetId($ins_data);
                    $user_ids = Db::name('user')->field('id')->select();
                    $sup_ids = Db::name('supplier')->field('id')->where('check_status',2)->select();
                    foreach ($user_ids as $key => $value)
                    {
                        $user_ins_data['user_id'] = $value['id'];
                        $user_ins_data['status'] = 'nul';
                        $user_ins_data['type'] = 0;
                        $user_ins_data['notice_id'] = $no_id;
                        Db::name('notice_read')->insert($user_ins_data);
                    }
                    foreach ($sup_ids as $key => $value)
                    {
                        $sup_ins_data['user_id'] = $value['id'];
                        $sup_ins_data['status'] = 'nul';
                        $sup_ins_data['type'] = 1;
                        $sup_ins_data['notice_id'] = $no_id;
                        Db::name('notice_read')->insert($sup_ins_data);
                    }
                    $result = Config::get('code.success');
                }
                else
                {
                    $ins_data['status'] = 2;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 3;
                    $no_id = Db::name('notice')->insertGetId($ins_data);
                    $result = Config::get('code.error');
                }
            }
            else if($data['type'] == 'supplies')
            {
                $push = new Jpush('shop');
                $info = $push->pushAll($data['content']);
                if($info)
                {
                    $result = Config::get('code.success');

                    $ins_data['status'] = 1;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 2;
                    $no_id = Db::name('notice')->insertGetId($ins_data);
                    $sup_ids = Db::name('supplier')->field('id')->where('check_status',2)->select();
                    foreach ($sup_ids as $key => $value)
                    {
                        $sup_ins_data['user_id'] = $value['id'];
                        $sup_ins_data['status'] = 'nul';
                        $sup_ins_data['type'] = 1;
                        $sup_ins_data['notice_id'] = $no_id;
                        Db::name('notice_read')->insert($sup_ins_data);
                    }
                }
                else
                {
                    $result = Config::get('code.error');
                    $ins_data['status'] = 2;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 2;
                    $no_id = Db::name('notice')->insertGetId($ins_data);
                }
            }
            else if($data['type'] == 'user')
            {
//                $tag = '';
//                $key_word = [];
//                if(array_key_exists('three' , $data) && $data['three'])
//                {
//                    $tag = $data['three'];
//                    $key_word['town'] = ['EQ' , $data['three']];
//                }
//                else if(array_key_exists('two' , $data) && $data['two'] && empty($data['three']))
//                {
//                    $tag = $data['two'];
//                    $key_word['town'] = ['EQ' , $data['two']];
//                }
                $push = new Jpush('user');
                $info = $push->pushAll($data['content']);
                if($info)
                {
                    $result = Config::get('code.success');
                    $ins_data['status'] = 1;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 1;
                    $no_id = Db::name('notice')->insertGetId($ins_data);

                    $user_ids = Db::name('user')->field('id')->select();
                    foreach ($user_ids as $key => $value)
                    {
                        $user_ins_data['user_id'] = $value['id'];
                        $user_ins_data['status'] = 'nul';
                        $user_ins_data['type'] = 0;
                        $user_ins_data['notice_id'] = $no_id;
                        Db::name('notice_read')->insert($user_ins_data);
                    }
                }
                else
                {
                    $result = Config::get('code.error');
                    $ins_data['status'] = 2;
                    $ins_data['title'] = $data['title'];
                    $ins_data['outline'] = $data['title'];
                    $ins_data['content'] = $data['content'];
                    $ins_data['title_english'] = $data['title_english'];
                    $ins_data['content_english'] = $data['content_english'];
                    $ins_data['create_time'] = date('Y-m-d H:i:s');
                    $ins_data['notice_type'] = 3;
                    $ins_data['show_type'] = 1;
                    $no_id = Db::name('notice')->insertGetId($ins_data);
                }
            }
            else
            {
                $result = Config::get('code.mistake');
            }
        }
        else
        {
            $result = Config::get('code.mistake');
        }
        return json($result);
    }


    /**
     * @return \think\response\Json
     */
    public function pushList()
    {
        $post = Request::instance()->post();
        $page = $post['pageNumber'] ? $post['pageNumber'] : 1;
        $limit = $post['pageSize'] ? $post['pageSize'] : 10;
        $limit1= ($page - 1 ) * $limit . ',' . $limit;
        $info = Db::name('notice')->field('title,create_time,show_type,content,status')->limit($limit1)->order('create_time desc')->select();
        $count = Db::name('notice')->count();
        if($info)
        {
            foreach ($info as $key => $value)
            {
                if($value['show_type'] == 1)
                    $info[$key]['show_type'] = '用户';
                if($value['show_type'] == 2)
                    $info[$key]['show_type'] = '商户';
                if($value['show_type'] == 3)
                    $info[$key]['show_type'] = '全部';
                if($value['status'] == 1)
                    $info[$key]['status'] = '成功';
                if($value['status'] == 2)
                    $info[$key]['status'] = '失败';
            }
            $result = Config::get('code.success');
            $result['data'] = $info;
            $result['count'] = $count;
        }
        else
        {
            $result = Config::get('code.null');
            $result['data'] = [];
            $result['count'] = 0;
        }
        return json($result);
    }
}